// 该文件的作用是：

// 创建一个名为 'recorder-processor' 的自定义音频处理器。
// 在音频流经过这个处理器时，实时获取音频样本数据，并通过 postMessage 发送到主线程（Main Thread）

class RecorderProcessor extends AudioWorkletProcessor {
  //process() 是 AudioWorkletProcessor 的核心方法，每当有新的音频数据块传入时就会被调用
  process(inputs) {
    const input = inputs[0] // 只处理第一个输入  inputs 是一个多维数组，结构为：inputs[输入通道][音频块数据]。
    if (input.length > 0) {
      // 获取音频数据  获取第一个输入（通常是麦克风输入）。
      // 如果你连接的是 MediaStreamSource，那么这个输入就是来自麦克风的音频数据。
      const samples = input[0] // 获取音频数据

      this.port.postMessage(samples) //使用 this.port（即 MessagePort）将音频数据发送回主线程
    }
    return true // 继续处理
  }
}

registerProcessor('recorder-processor', RecorderProcessor)
